package br.com.consultoria.andre.biblos.server.services;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import br.com.consultoria.andre.biblos.server.web.model.Categoria;
import br.com.consultoria.andre.biblos.server.web.model.Livro;

@Component
public class LivroDao {

	@PersistenceContext
	private EntityManager entityManager;

	@Transactional
	public void save(Livro livro) {
		entityManager.persist(livro);
	}

	@SuppressWarnings("unchecked")
	public List<Livro> list() {
		List<Livro> livros = new ArrayList<Livro>();
		livros = entityManager.createQuery("select l from livro l").getResultList();
		return livros; 
	}

	@SuppressWarnings("unchecked")
	public List<Categoria> carregarCategorias() {
		List<Categoria> categorias = new ArrayList<Categoria>();
		categorias = entityManager.createQuery("select c from categoria c").getResultList();
		return categorias;
	}

	@Transactional
	public Boolean excluirPorId(Long id) {
		Boolean retorno = false;

		try {
			Livro rmLivro = entityManager.find(Livro.class, id);
	        entityManager.remove(rmLivro);
			retorno = true;
		} catch (Exception e) {
			System.err.println(e.getMessage());
		}
		return retorno;
	}
	
}
